草庐IT

C++ double 到 long long

全部标签

c++ - 为什么他用 "typedef vector<double>::size_type"而不是用 "int"

我刚刚学习C++,并且正在使用AcceleratedC++。在一个vector例子中,作者使用了如下代码;typedefvector::size_typevec_sz;vec_szsize=homework.size;我知道typedefvector::size_typevec_sz;这样他就不必将下一个命令写成vector::size_typesize=homework.size;,但我的问题是他为什么不直接声明size改为整数?intsize=homework.size;这是因为我们使用了vector吗?如果是这样,是否意味着vector迭代器返回的值不能存储在常规变量中?

c++ - 在 C++ 中的 double 组中搜索最近的值?

我在C++中有一个double值的排序数组。是否有一个STL函数可以将数组中最近值的索引返回给定的double值?例如,给定以下数组doublemyarray[5]={1.0,1.2,1.4.1.5,1.9};函数调用search(myarray,1.6);应该返回3,即最接近1.6的元素的索引,而不是-1(或其他一些标志值),表示未找到值1.6. 最佳答案 也许std::lower_boundstd::upper_bound会帮助你。 关于c++-在C++中的double组中搜索最近的

c++ - 如何将 double 数组输出到硬盘?

我想知道如何将double组输出到硬盘。编辑:进一步说明。我想将它输出到硬盘驱动器上的一个文件(I/O函数)。最好采用可以在另一个程序中快速转换回double组的文件格式。如果它存储在标准的4字节配置中也很好,这样我就可以通过十六进制查看器查看它并查看实际值。 最佳答案 嘿...所以你想在一次写入/读取中完成它,这并不太难,下面的代码应该可以正常工作,可能需要一些额外的错误检查,但试用案例是成功的:#include#include#includeboolsaveArray(constdouble*pdata,size_tlength

c++ - 将 vector <std::string> 转换为 vector <double>

我有一个像{"1.2","3.4","0.5","200.7"}这样的字符串vector.我想将每个元素转换为double并将其存储在vector中.像这样{1.2,3.4,0.5,200.7}执行此操作的最佳方法是什么?我知道std::stod(string,size);但我希望有更好的方法来做到这一点。我在寻找类似的东西:vectordoubleVector=convertStringVectortoDoubleVector(myStringVector);似乎没有这样的东西;那么下一个最好的事情是什么?编辑:这是我最终使用的:std::vectorconvertStringVec

c++ - 为什么 lambda 没有从到达范围捕获类型 const double,而 const int 是?

我似乎无法理解为什么以下类型为constint的代码可以编译:intmain(){usingT=int;constTx=1;autolam=[](Tp){returnx+p;};}$clang++-clambda1.cpp-std=c++11$而这个类型为constdouble的不是:intmain(){usingT=double;constTx=1.0;autolam=[](Tp){returnx+p;};}$clang++-clambda2.cpp-std=c++11lambda1.cpp:5:32:error:variable'x'cannotbeimplicitlycaptur

c++ - 使用 clang 8 的 lambda 表达式中的 Double-free 崩溃

当将std::vector移动到lambda表达式中并且lambda表达式抛出异常时,我在clang8.0上因双重释放而崩溃。来自其他编译器(如gcc或clang7)的可执行文件运行无误。我是否在我的代码中做了一些非法的事情?templatevoidmyExecute(F&&f){f();}intmain(){try{std::vectortest={0.0,1.0};myExecute([v=std::move(test)](){throwstd::runtime_error("exception");});}catch(conststd::exception&e){std::cou

c++ - 英特尔 TBB 中的原子 double / float

根据文档,atomic支持整数类型的T,枚举类型,或者指针类型。英特尔TBB是否正式支持float/double?我看过一些补丁here和RafSchietekathere,它可能/可能没有被合并到最新的4.0版本中。从我通读的补丁中,我注意到的唯一主要区别是将reinterpret_cast从整数类型添加到float/double。如果有人能澄清这一点,我将不胜感激。谢谢! 最佳答案 您可以轻松添加对基于64位和32位原子整数构建的float的支持。原子加载/存储/交换可以使用reinterpret_cast作为直接包装器实现,原

c++ - double 浮点比较

我在这里有点困惑-当double值存储为不透明(二进制)字段时,它们的比较是否仍能正常工作?我面临的问题是double包含符号的前导位(即正数或负数),当它们存储为二进制数据时,我不确定它是否会被正确比较:我想确保比较能够正常进行,因为我使用double作为keytuple(e.g.)inLevelDB的一部分我想保留正数和负数的数据局部性。LevelDB仅使用不透明字段作为键,但它确实允许用户指定他/她自己的比较器。但是,我只是想确保我不指定比较器,除非我绝对需要://Three-waycomparisonfunction://ifab:positiveresult//else:ze

c++ - 对定义为 vector<double> 的矩阵进行排序

假设我有一个方阵A尺寸n,定义为std::vector.std::vectorA(n*n);矩阵的元素以通常的方式访问:doublea_ij=A[i*n+j];我需要根据第一列对矩阵的行进行升序排序。qsort函数允许我使用数组和函数指针来完成它,但我想找到一种方法来使用vector和std::sort来完成它.另请注意,出于性能原因,我不想将矩阵定义为vector的vector。编辑:我传给qsort的函数:staticintcomparisonFunction(constvoid*firstRow,constvoid*secondRow){if(((double*)firstRow

c++ - clang 3.5 constexpr 不一致 - 使用 double 而不是 int 时出错

回答后usingboostmathconstantsinconstexpr并建议OP对constexpr变量使用boost的模板化函数而不是非模板化常量来平息clang错误,我决定尝试看看什么条件会重现clang中的错误。让我们尝试复制boost的宏扩展到的内容:namespacedouble_constants{staticconstdoublename=25;}staticconstexprdoubleSEC3=double_constants::name;这会产生以下错误(按照Coliru进行)clang++-std=c++1y-O2-Wall-pedantic-pthreadm